import type { ApiResponse, PageResult } from '@/types';

/**
 * 统一处理分页响应数据
 * 
 * @param response API响应数据，可能是PageResult<T>或ApiResponse<PageResult<T>>
 * @returns 标准化的分页数据 { records, total, current, size }
 */
export function handlePageResponse<T>(response: any): {
  records: T[];
  total: number;
  current: number;
  size: number;
} {
  // 情况1: 响应是标准API响应格式 ApiResponse<PageResult<T>>
  if (response && response.code === 200 && response.data) {
    return {
      records: response.data.records || [],
      total: response.data.total || 0,
      current: Number(response.data.pageNum) || 1,
      size: Number(response.data.pageSize) || 10
    };
  }
  
  // 情况2: 响应直接是分页结果对象 PageResult<T>
  if (response && response.records) {
    return {
      records: response.records || [],
      total: response.total || 0,
      current: Number(response.pageNum) || 1,
      size: Number(response.pageSize) || 10
    };
  }
  
  // 兜底处理
  console.warn('无法识别的分页响应格式:', response);
  return {
    records: [],
    total: 0,
    current: 1,
    size: 10
  };
}

/**
 * 创建分页配置，用于列表组件
 * @returns 分页配置对象
 */
export function createPagination() {
  return {
    current: 1,
    size: 10,
    total: 0
  };
}

/**
 * 分页大小改变处理函数
 * @param pagination 分页对象
 * @param fetchData 获取数据的函数
 */
export function handleSizeChange(pagination: { current: number; size: number }, fetchData: () => void) {
  pagination.current = 1;
  fetchData();
}

/**
 * 当前页改变处理函数
 * @param pagination 分页对象
 * @param fetchData 获取数据的函数
 */
export function handleCurrentChange(pagination: { current: number; size: number }, fetchData: () => void) {
  fetchData();
} 